export { };
//抽象类:使用abstract来定义一个抽象类，只能被子类继承，不能被实例化；
abstract class Person {
  name: string = '李四';
  age: number = 22;
  sex: boolean = true;

  eat(foodName: string): void {
    console.log(this.name + '在吃' + foodName);
  }

  drink(foodName: string): void {
    console.log(this.name + '在喝' + foodName);
  }
  // 抽象方法的语法与接口方法相似。 两者都是定义方法签名但不包含方法体（具体代码不会写出来，只有名字和参数、返回值的规范）。
  abstract jump(count: number): void

}

// new Person(); // 无法创建抽象类的实例。

// 非抽象类“Student”不会实现继承自“Person”类的抽象成员“jump”
class Student extends Person {
  //  在子类里面，必须要实现父类中抽象的方法
  jump(count: number): void {
    console.log(this.name + '跳绳' + count + '次');
  }
}

new Student().eat('苹果') //李四在吃苹果
new Student().jump(10000) // TypeError: (intermediate value).jump is not a function
